Many computer users work on the go, and are frustrated by the small screen of a laptop computer. Many of these users also carry with them a mobile device, in addition to a laptop computer. There is a need for a solution that allows computer users to use a device with a screen, such as a tablet, mobile phone, or another computer, as a monitor for a computer.
Numerous solutions are commercially available today that allow a client device with a screen to be used as a display for a host computer. With one exception, these systems convince the host computer that a physical display is connected by implementing a virtual video driver. The one exception is Air Squirrels' clever Reflector software, which implements a receiver for Apple's AirPlay protocol. But Reflector, which uses a hacked copy of Apple's private key, is a fragile solution that cannot be sold in Apple's ecosystem, can be broken by a change in Apple's AirPlay implementation at any time, and because it uses a pirated private key, is ethically questionable.
The other solutions all employ virtual video drivers. These virtual video drivers are full software drivers that convince the host computer that a physical display is connected. The host computer then renders the contents of that display into a frame buffer in memory. In turn, host software repeatedly streams the contents of that frame buffer to some external device. This is a suboptimal solution for several reasons.
In general, virtual video drivers are not associated with any physical graphic-acceleration hardware. Consequently, they are subject to severe performance and compatibility limitations, because most modern performance-dependent software is optimized to perform graphics operations with a graphics accelerator. In the absence of hardware graphics acceleration, many apps fail to render some user interface elements, render incorrectly, or crash completely. And virtual video drivers are fragile on macOS because Apple has not made its video driver protocols public and changes those protocols frequently.
One commercially available virtual video driver solution supports hardware graphics acceleration. That one, Avatron's Air Display Host for Windows (U.S. Pat. No. 9,058,759 B2), is fragile and very complicated, because it attempts to implement the entire application-level rendering stack. Furthermore, because Microsoft routinely adds features and complexity to its graphic acceleration driver specification, that hardware-accelerated Air Display Host needs to be updated frequently to stay compatible with Windows—and that approach only works on Windows.
At the same time, modern computer operating systems, such as macOS and Windows, do allow hardware graphics acceleration for monitors that are connected to their video output ports, such as HDMI (High-Definition Multimedia Interface), VGA (Video Graphics Array), Mini DisplayPort, and Mini DVI (Digital Visual Interface). Displays connected to these ports are driven by the computer's own video drivers, which in modern personal computers do feature graphics acceleration hardware. These operating systems do not, however, allow such automatic graphic acceleration for displays connected via Wi-Fi (Wireless Fidelity), USB (Universal Serial Bus), or custom cables. So, displays plugged into the standard video ports are fast and compatible, while those that are connected via other methods are not.
There is a recent development called a display simulator. Sometimes it is called by the misnomer “headless accelerator,” but it is not an accelerator. It is a dongle, i.e., a small device that plugs into a video port (such as HDMI, DisplayPort, or VGA) and convinces the computer that it is a real display. In its simplest form, it is just a resistor plugged into two pins of a VGA port, but it can also be a small board with memory and controller chips, reporting display descriptors via DisplayID or EDID blocks. The display simulator does not display anything on a monitor, but it does convince a computer that something is plugged into a video port. In response, the computer dutifully uses its graphics accelerator to render into the frame buffer that it has associated with the phantom display. Display simulators are designed for “headless” servers, which have no physical display. They convince a server computer that a monitor is connected so that the server can use its GPU for accelerated rendering. But it doesn't provide a secondary monitor.